OMG No JavaScript!
module !== commonjs module
module !== AMD module
module !== Module Pattern
$scope !== js scope
$scope is not your model!
Don't treat $scope like a model
If you do.....
Unit of code resuse in Angular
No easy way to extend or inherit from Another Directive
{{attr | lowerCase | upperCase | iHaveNoIdeaWhatImDoing }}
The advantage of transclusion is that the linking function receives a transclusion function which is pre-bound to the correct scope. In a typical setup the widget creates an isolate scope, but the transclusion is not a child, but a sibling of the isolate scope. This makes it possible for the widget to have private state, and the transclusion to be bound to the parent (pre-isolate) scope.